package cn.edu.hbpu.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * @author lcy
 * @date 2022/8/7 16:09
 * @description
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("goods")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Goods {
    /**
     * 商品id
     */
    @TableId
    @JsonProperty("gId")
    private String gId;
    /**
     * 商品名
     */
    @JsonProperty("gName")
    private String gName;
    /**
     * 原价
     */
    @JsonProperty("originalPrice")
    private double originalPrice;
    /**
     * 折后价（现价）
     */
    @JsonProperty("discountPrice")
    private double discountPrice;
    /**
     * 库存
     */
    @JsonProperty("stock")
    private long stock;
    /**
     * 销售量
     */
    @JsonProperty("sales")
    private long sales;
    /**
     * 商品图片
     */
    @JsonProperty("image")
    private String image;
    /**
     * 商品描述
     */
    @JsonProperty("description")
    private String description;
    /**
     * 商品状态 1上架 0未上架
     */
    @JsonProperty("status")
    @JsonIgnore
    private int status;
    /**
     * 是否删除，1删除 0未删除
     */
    @JsonIgnore
    @TableLogic
    @JsonProperty("isDeleted")
    private int isDeleted;
    /**
     * 点击量
     */
    @JsonProperty("clickRate")
    private long clickRate;
    /**
     * 收藏量
     */
    @JsonProperty("collectionRate")
    private long collectionRate;
    /**
     * 三级分类id
     */
    @JsonProperty("tId")
    private String tId;
    /**
     * 所属三级名
     */
    @JsonProperty("tName")
    @TableField(select = false)
    private String tName;

    @TableField(fill = FieldFill.INSERT)
    @JsonProperty("createTime")
    private LocalDateTime createTime;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonProperty("updateTime")
    private LocalDateTime updateTime;

}
